home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacApp Release 10 / MacApp Release 10 - HD Ready / Libraries / Framework / Sources / UFileStream.cp < prev    next >
Encoding:
Text File  |  1996-04-03  |  8.0 KB  |  289 lines  |  [TEXT/MPS ]

  1. //----------------------------------------------------------------------------------------
  2. // UFileStream.cp 
  3. // Copyright © 1990-96 by Apple Computer, Inc. All rights reserved.
  4. //
  5. // Originally written by Larry S. Rosenstein.  Used by permission 
  6. //----------------------------------------------------------------------------------------
  7.  
  8. #ifndef __UFILESTREAM__
  9. #include "UFileStream.h"
  10. #endif
  11.  
  12. // MacApp
  13.  
  14. #ifndef __GEOMETRY__
  15. #include "Geometry.h"
  16. #endif
  17.  
  18. #ifndef __UFAILURE__
  19. #include "UFailure.h"
  20. #endif
  21.  
  22. #ifndef __UFILE__
  23. #include "UFile.h"
  24. #endif
  25.  
  26. #ifndef __ULIST__
  27. #include "UList.h"
  28. #endif
  29.  
  30. #ifndef __ULISTITERATOR__
  31. #include "UListIterator.h"
  32. #endif
  33.  
  34. #ifndef __UMACAPPGLOBALS__
  35. #include "UMacAppGlobals.h"
  36. #endif
  37.  
  38. #ifndef __UMACAPPUTILITIES__
  39. #include "UMacAppUtilities.h"
  40. #endif
  41.  
  42. #ifndef __UMEMORY__
  43. #include "UMemory.h"
  44. #endif
  45.  
  46. #ifndef __UPATCH__
  47. #include "UPatch.h"
  48. #endif
  49.  
  50. // Toolbox
  51.  
  52. #ifndef __ERRORS__
  53. #include <Errors.h>
  54. #endif
  55.  
  56. #ifndef __FILES__
  57. #include <Files.h>
  58. #endif
  59.  
  60. #ifndef __LOWMEM__
  61. #include <LowMem.h>
  62. #endif
  63.  
  64. #ifndef __OSUTILS__
  65. #include <OSUtils.h>
  66. #endif
  67.  
  68. #ifndef __RESOURCES__
  69. #include <Resources.h>
  70. #endif
  71.  
  72. #ifndef __TEXTEDIT__
  73. #include <TextEdit.h>
  74. #endif
  75.  
  76. // ANSI
  77.  
  78. #ifndef __LIMITS__
  79. #include <limits.h>
  80. #endif
  81.  
  82.  
  83. //========================================================================================
  84. // CLASS TFileStream
  85. //========================================================================================
  86. #undef Inherited
  87. #define Inherited TStream
  88.  
  89. #pragma segment MAStreamCreate
  90. MA_DEFINE_CLASS_M1(TFileStream, Inherited);
  91.  
  92. //----------------------------------------------------------------------------------------
  93. // TFileStream constructor
  94. //----------------------------------------------------------------------------------------
  95. #pragma segment MAStreamCreate
  96.  
  97. TFileStream::TFileStream()
  98. {
  99.     fFile = NULL;
  100. } // TFileStream::TFileStream
  101.  
  102. //----------------------------------------------------------------------------------------
  103. // TFileStream destructor
  104. //----------------------------------------------------------------------------------------
  105. #pragma segment MADestructorRes
  106.  
  107. TFileStream::~TFileStream()
  108. {
  109. }
  110.  
  111. //----------------------------------------------------------------------------------------
  112. // TFileStream::IFileStream: 
  113. //----------------------------------------------------------------------------------------
  114. #pragma segment MAStreamCreate
  115.  
  116. void TFileStream::IFileStream(TFile* itsFile)
  117. {
  118.     this->IStream();
  119.     fFile = itsFile;                            // Remember the file reference. 
  120. } // TFileStream::IFileStream 
  121.  
  122. //----------------------------------------------------------------------------------------
  123. // TFileStream::GetPosition: 
  124. //----------------------------------------------------------------------------------------
  125. #pragma segment MAStreamUtil
  126.  
  127. long TFileStream::GetPosition()        // override 
  128. {
  129.     long itsDataMark;
  130.  
  131.     FailNIL(fFile);
  132.     FailOSErr(fFile->GetDataMark(itsDataMark));    // Call the TFile method. 
  133.     return itsDataMark;                            // Return the result. 
  134. } // TFileStream::GetPosition 
  135.  
  136. //----------------------------------------------------------------------------------------
  137. // TFileStream::GetSize: 
  138. //----------------------------------------------------------------------------------------
  139. #pragma segment MAStreamUtil
  140.  
  141. long TFileStream::GetSize()            // override 
  142. {
  143.     long itsDataLength;
  144.  
  145.     FailNIL(fFile);
  146.     FailOSErr(fFile->GetDataLength(itsDataLength));        // Call the TFile method. 
  147.     return itsDataLength;                        // Return the result. 
  148. } // TFileStream::GetSize 
  149.  
  150.  
  151. //----------------------------------------------------------------------------------------
  152. // TFileStream::SetPosition: 
  153. //----------------------------------------------------------------------------------------
  154. #pragma segment MAStreamUtil
  155.  
  156. void TFileStream::SetPosition(long newPosition)// override 
  157. {
  158.     FailNIL(fFile);
  159.     FailOSErr(fFile->SetDataMark(newPosition,fsFromStart));
  160. } // TFileStream::SetPosition 
  161.  
  162. //----------------------------------------------------------------------------------------
  163. // TFileStream::SetSize: 
  164. //----------------------------------------------------------------------------------------
  165. #pragma segment MAStreamUtil
  166.  
  167. void TFileStream::SetSize(long newSize)    // override 
  168. {
  169.     FailNIL(fFile);
  170.     FailOSErr(fFile->SetDataLength(newSize));
  171. } // TFileStream::SetSize 
  172.  
  173. //----------------------------------------------------------------------------------------
  174. // TFileStream::ReadBytes: 
  175. //----------------------------------------------------------------------------------------
  176. #pragma segment MAStreamRead
  177.  
  178. void TFileStream::ReadBytes(void* p,
  179.                                    long count)    // override 
  180. {
  181.     FailNIL(fFile);
  182.     FailOSErr(fFile->ReadData(p,count));    
  183. } // TFileStream::ReadBytes 
  184.  
  185. //----------------------------------------------------------------------------------------
  186. // TFileStream::WriteBytes: 
  187. //----------------------------------------------------------------------------------------
  188. #pragma segment MAStreamWrite
  189.  
  190. void TFileStream::WriteBytes(const void* p,
  191.                                     long count)    // override 
  192. {
  193.     FailNIL(fFile);
  194.     FailOSErr(fFile->WriteData(p,count));
  195. } // TFileStream::WriteBytes 
  196.  
  197.  
  198. //========================================================================================
  199. // CLASS TFileResourceStream
  200. //========================================================================================
  201. #undef Inherited
  202. #define Inherited TResourceStream
  203.  
  204. #pragma segment Main
  205. MA_DEFINE_CLASS_M1(TFileResourceStream, Inherited);
  206.  
  207. //----------------------------------------------------------------------------------------
  208. // TFileResourceStream::TFileResourceStream: 
  209. //----------------------------------------------------------------------------------------
  210. #pragma segment MAStreamCreate
  211.  
  212. TFileResourceStream::TFileResourceStream() 
  213. {
  214.     fFile = NULL;
  215. } // TFileResourceStream::TFileResourceStream
  216.  
  217. //----------------------------------------------------------------------------------------
  218. // TFileResourceStream destructor
  219. //----------------------------------------------------------------------------------------
  220. #pragma segment MADestructorRes
  221.  
  222. TFileResourceStream::~TFileResourceStream()
  223. {
  224. }
  225.  
  226. //----------------------------------------------------------------------------------------
  227. // TFileResourceStream::IFileResourceStream: 
  228. //----------------------------------------------------------------------------------------
  229. #pragma segment MAStreamCreate
  230.  
  231. void TFileResourceStream::IFileResourceStream(     TFile* theFile, 
  232.                                                 ResType theType, 
  233.                                                 ResNumber theID)
  234. {
  235.     short currentResource = theFile->UseResource();
  236.     
  237.     Inherited::IResourceStream (theType, theID);
  238.     
  239.     MAUseResFile( currentResource );
  240.     fFile = theFile;
  241. } // TFileResourceStream::IFileResourceStream
  242.  
  243. //----------------------------------------------------------------------------------------
  244. // TFileResourceStream::WriteBytes: 
  245. //----------------------------------------------------------------------------------------
  246. #pragma segment MASectionWrite
  247.  
  248. void TFileResourceStream::WriteBytes(const void* p, long count)
  249. {
  250.     short currentResource = fFile->UseResource();
  251.     
  252.     Inherited::WriteBytes (p, count);
  253.     
  254.     MAUseResFile( currentResource );
  255. } // TFileResourceStream::WriteBytes
  256.  
  257. //----------------------------------------------------------------------------------------
  258. // TFileResourceStream::ReadBytes: 
  259. //----------------------------------------------------------------------------------------
  260. #pragma segment MAStreamRead
  261.  
  262. void TFileResourceStream::ReadBytes(void* p, long count)
  263. {
  264.     short currentResource = fFile->UseResource();
  265.     
  266.     Inherited::ReadBytes (p, count);
  267.     
  268.     MAUseResFile( currentResource );
  269. } // TFileResourceStream::ReadBytes
  270.  
  271. //----------------------------------------------------------------------------------------
  272. // TFileResourceStream::SetSize: 
  273. //----------------------------------------------------------------------------------------
  274. #pragma segment MAStreamUtil
  275.  
  276. void TFileResourceStream::SetSize(long newSize)
  277. {
  278.     short currentResource = fFile->UseResource();
  279.     
  280.     Inherited::SetSize (newSize);
  281.     
  282.     MAUseResFile( currentResource );
  283. } // TFileResourceStream::SetSize
  284.  
  285. //----------------------------------------------------------------------------------------
  286. // End of UFileStream.cp
  287.  
  288. #pragma segment Inline
  289.